package pe.gob.onpe.struts.action;

import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import pe.gob.onpe.ctrlNegocio.CNPrepararEleccion;
import pe.gob.onpe.pojo.EstadoCivilPojo;
import pe.gob.onpe.pojo.OficinaDespachoPojo;
import pe.gob.onpe.pojo.SexoPojo;
import pe.gob.onpe.pojo.UbigeoPojo;
import pe.gob.onpe.util.Funciones;
import pe.gob.onpe.util.PARAMETROS;
import pe.gob.onpe.util.ServiceLocator;

public class RegistrarElectorAction extends DispatchAction {

	private CNPrepararEleccion			oCNPrepararEleccion			= (CNPrepararEleccion)ServiceLocator.getInstance().getLocal(PARAMETROS.CNPrepararEleccion);
	
	//private		Long	procesoElectoralId = new Long(1);
	
	public ActionForward mostrarRegistrarElector(ActionMapping mapping,
													ActionForm form, 
													HttpServletRequest request,
													HttpServletResponse response)throws Exception{
		
		String ubigeoDepartamento;
		String ubigeoProvincia;
		Long	procesoElectoralId = Funciones.obtenerProcesoElectoralId(request);
			
		ubigeoDepartamento	= request.getParameter("departamento");
		ubigeoProvincia		= request.getParameter("provincia");
		
		List<EstadoCivilPojo>		listEstadoCivil		= oCNPrepararEleccion.listadoEstadoCivil();
		List<SexoPojo>				listSexo			= oCNPrepararEleccion.listadoSexo();
		List<UbigeoPojo>			listDepartamentos	= oCNPrepararEleccion.listadoUbigeoPorPadre(PARAMETROS.UBIGEO_NACION);
		List<OficinaDespachoPojo>	listOficinaDespacho = oCNPrepararEleccion.lisOficinaDespachoPorProcElect(procesoElectoralId);
		
		request.setAttribute("listOficinaDespacho", listOficinaDespacho);
		request.setAttribute("listSexo", listSexo);
		request.setAttribute("listEstadoCivil", listEstadoCivil);
		
		request.setAttribute("listDepartamentos",listDepartamentos);
		if(ubigeoDepartamento!=null && !ubigeoDepartamento.equals("")){
			List<UbigeoPojo> listProvincia = oCNPrepararEleccion.listadoUbigeoPorPadre(ubigeoDepartamento);
			request.setAttribute("listProvincia",listProvincia);
		}
		if(ubigeoProvincia!=null && !ubigeoProvincia.equals("")){
			List<UbigeoPojo> listDistrito = oCNPrepararEleccion.listadoUbigeoPorPadre(ubigeoProvincia);
			request.setAttribute("listDistrito",listDistrito);
		}
		
		return mapping.findForward("mostrarRegistrarElector");
	}
	
	public ActionForward registrarElector(ActionMapping mapping,
											ActionForm form, 
											HttpServletRequest request,
											HttpServletResponse response)throws Exception{
		
		String	dni					= request.getParameter("dni");
		String	apellidoPaterno		= request.getParameter("apellidoPaterno");
		String	apellidoMaterno		= request.getParameter("apellidoMaterno");
		String	nombre				= request.getParameter("nombre");
		String	fechaNacimiento		= request.getParameter("fechaNacimiento");
		String	sexo				= request.getParameter("sexo");
		String	estadoCivil			= request.getParameter("estadoCivil");
		String	grupoVotacion		= request.getParameter("grupoVotacion");
		String	correoElectronico	= request.getParameter("correoElectronico");
		String	oficinaDespachoTemp	= request.getParameter("oficinaDespacho");
		Long	oficinaDespacho		= Long.parseLong(oficinaDespachoTemp);
		String	distrito			= request.getParameter("distrito");
		String	direccion			= request.getParameter("direccion");
		Long	procesoElectoralId	= Funciones.obtenerProcesoElectoralId(request);
		
		List<UbigeoPojo> listProvincia = null;
		List<UbigeoPojo> listDistrito = null;
			
		String resultado = oCNPrepararEleccion.registrarElector(dni,
											apellidoPaterno,
											apellidoMaterno,
											nombre,
											fechaNacimiento,
											sexo,
											estadoCivil,
											grupoVotacion,
											correoElectronico,
											oficinaDespacho,
											distrito,
											direccion,
											procesoElectoralId);
		
		request.setAttribute("resultado", resultado);
		
		if(resultado.equals("exito")){
			return mapping.findForward("menuPrincipal");
		}else{
			String ubigeoDepartamento;
			String ubigeoProvincia;
			ubigeoDepartamento	= request.getParameter("departamento");
			ubigeoProvincia		= request.getParameter("provincia");
			List<EstadoCivilPojo>	listEstadoCivil		= oCNPrepararEleccion.listadoEstadoCivil();
			List<SexoPojo>			listSexo			= oCNPrepararEleccion.listadoSexo();
			List<UbigeoPojo>		listDepartamentos	= oCNPrepararEleccion.listadoUbigeoPorPadre(PARAMETROS.UBIGEO_NACION);
			List<OficinaDespachoPojo> listOficinaDespacho = oCNPrepararEleccion.lisOficinaDespachoPorProcElect(procesoElectoralId);
			
			if(ubigeoDepartamento!=null && !ubigeoDepartamento.equals("")){
				listProvincia = oCNPrepararEleccion.listadoUbigeoPorPadre(ubigeoDepartamento);
			}
			if(ubigeoProvincia!=null && !ubigeoProvincia.equals("")){
				listDistrito = oCNPrepararEleccion.listadoUbigeoPorPadre(ubigeoProvincia);
			}
			
			request.setAttribute("listOficinaDespacho", listOficinaDespacho);
			request.setAttribute("listSexo", listSexo);
			request.setAttribute("listEstadoCivil", listEstadoCivil);
			request.setAttribute("listDepartamentos",listDepartamentos);
			request.setAttribute("listProvincia",listProvincia);
			request.setAttribute("listDistrito",listDistrito);
			
			return mapping.findForward("mostrarRegistrarElector");
		}
	}
}
